As the value and use of information continues to increase, individuals and businesses seek additional ways to process and store information. One option available to users is information handling systems. An information handling system generally processes, compiles, stores, and/or communicates information or data for business, personal, or other purposes thereby allowing users to take advantage of the value of the information. Because technology and information handling needs and requirements vary between different users or applications, information handling systems may also vary regarding what information is handled, how the information is handled, how much information is processed, stored, or communicated, and how quickly and efficiently the information may be processed, stored, or communicated. The variations in information handling systems allow for information handling systems to be general or configured for a specific user or specific use such as financial transaction processing, airline reservations, enterprise data storage, or global communications. In addition, information handling systems may include a variety of hardware and software components that may be configured to process, store, and communicate information and may include one or more computer systems, data storage systems, and networking systems.
Information handling systems often use peripheral devices including Peripheral Component Interconnect (PCI) and PCI Express (PCIe) devices for storage and/or other functionality. For example, Non-Volatile Memory Express (NVMe) storage devices may often be implemented as PCIe devices.
Information handling systems often use an array of physical storage resources (e.g., disk drives), such as a Redundant Array of Independent Disks (“RAID”), for example, for storing information. Arrays of physical storage resources typically utilize multiple disks to perform input and output operations and can be structured to provide redundancy which may increase fault tolerance. Other advantages of arrays of physical storage resources may be increased data integrity, throughput and/or capacity. In operation, one or more physical storage resources disposed in an array of physical storage resources may appear to an operating system as a single logical storage unit or “logical unit.” Implementations of physical storage resource arrays can range from a few physical storage resources disposed in a chassis, to hundreds of physical storage resources disposed in one or more separate storage enclosures.
In traditional approaches, a storage array is typically managed by a hardware storage controller that may interface with a RAID driver executing on top of an operating system of an information handling system. Because individual storage resources are controlled by a standalone storage controller, as storage resources are added and removed, the RAID may be maintained.
Typically, during boot of an operating system in an information handling system, all storage controllers and storage devices are discovered and then initialized. For example, in the Windows operating system, initialization of storage devices is performed by invoking the respective installed drivers (e.g., by storport or miniport) sequentially one after another. In Windows, initialization may comprise a three-step process involving PCI_Discovery (e.g., Find Adapter in Windows), PCI_Initialization (e.g., HwInitialization in windows), and Small Computer Systems Interface (SCSI) Discovery. For every storage Peripheral Component Interconnect (PCI) device, PCI_Initialization may be followed by SCSI discovery. The operating system may expect at least one SCSI device for it to continue. In case of a boot device, the operating system expects a boot device to be discovered. If no boot logical unit is discovered, an operating system may crash with an error of “no boot device found.”
Booting may present a particular challenge when it is desired to boot an information handling system from a virtual logical unit spanned across a plurality of Peripheral Component Interconnect Express (PCIe) devices, as the boot logical unit may comprise the virtual logical unit formed from the plurality of PCIe devices. This may be a common scenario in the case of Non-Volatile Memory Express (NVMe) storage drives.
Such challenges may be addressed relatively easily in the case of hardware RAID as the logical unit may be completely virtualized from the host. However, the challenge becomes difficult to address in the case of software RAID (operating system (OS) RAID) as the virtual logical unit's individual physical storage devices may be visible to the host operating system. After each PCIe storage device discovery, an operating system may initiate SCSI discovery. However, the virtual logical unit may not be ready after the discovery of the PCIe devices and SCSI discovery would not be able to respond.